package tables

// Knowledge 知识库，作用类似文档目录。添加到知识库的文件会被做向量解析，将来和ai聊天时可以应用知识库中的内容。
type Knowledge struct {
	Id             int64  `json:"id,string" gorm:"primaryKey;column:id"`
	Name           string `json:"name"`
	Describe       string `json:"describe"`
	EmbeddingModel string `json:"embeddingModel"`
	ChunkSize      int    `json:"chunkSize"`
	ChunkOverlap   int    `json:"chunkOverlap"`
	AutoCreateInfo `json:"autoCreateInfo"`
}

func (r *Knowledge) TableName() string {
	return "lms_knowledge"
}

// MapKnowledgeDoc 知识库和文档映射，文档可以是文件也能是一个网站url
type MapKnowledgeDoc struct {
	KnowledgeId  int64  `json:"knowledgeId,string" gorm:"primaryKey;column:knowledge_id"`
	DocType      int    `json:"docType"`      // pdf、word、txt、 url，目前只有url需要特别标记
	DocId        int64  `json:"docId,string"` //可以为空，因为doc不一定就是一个文件，只有当doc指向courseware时才有id
	Path         string `json:"path"`         // 路径
	VectorStatus int    `json:"vectorStatus"` // 数据向量化状态，1-未转换，2-处理中，3-处理完成，4-error
}

func (r *MapKnowledgeDoc) TableName() string {
	return "lms_map_knowledge_doc"
}
